Redis实现键对应多值 | 您所在的位置:网站首页 › redis 切换db0到db1 › Redis实现键对应多值 |
Redis实现键对应多值作者:chszs
Redis服务器提供了很多流行的数据结构,比如Map、List、Set…… 而在项目开发中,可能会遇到更复杂的需求,需要更复杂的数据结构,比如一个键对应存储多个值,要实现这样的需求,最好的办法就是实现Multimap数据结构。 首先需要自己构建这样的数据结构,如下: Map setMultimap = new HashMap(); void put(MyKey key, MyObject obj) { Set list = setMultimap.get(key); if (set == null) { set = new HashSet(); setMultimap.put(key, obj); } set.add(obj); } void remove(MyObject obj) { set set = setMultimap.get(key); if (set != null) { set.remove(obj); } }要使得Redis支持此数据结构,还需做很多工作:创建Redis连接、执行Redis命令、在Redis的map键和Redis的list值之间建立单向关系等。 如果Redis的Java客户端驱动使用Redisson框架(不使用Jedis),那么实现以上工作非常简单。Redisson可以帮助开发者完成这些繁琐的工作,Redisson实现了标准的Java对象集合,包括:Map、List、Set、Lock…,还提供了Multimap对象。 http://redisson.org/ Redisson框架提供了两种Multimap对象: RListMultimap:基于List的Multimap,键绑定的值存储于List结构中。RSetMultimap:基于Set的Multimap,键绑定的值存储于Set结构中。下面看看使用RSetMultimap的例子: Config config = new Config(); config.useClusterServers() // redis cluster nodes .addNodeAddress("127.0.0.1:7000", "127.0.0.1:7001"); RedissonClient redisson = Redisson.create(config); RSetMultimap setMultimap = redisson.getSetMultimap("myFish"); // Adding items setMultimap.put("favoriteFish", "Flagfin"); setMultimap.put("favoriteFish", "Shiner"); setMultimap.put("favoriteFish", "Ladyfish"); setMultimap.put("oceanFish", "Shark"); setMultimap.put("oceanFish", "Ocean sunfish"); // Removing item setMultimap.remove("oceanFish", "Shark"); setMultimap.remove("favoriteFish", "Flagfin"); // Getting all items Set favoriteFish = setMultimap.get("favoriteFish"); // Getting size // total entries amount setMultimap.size(); // 5 // total values amount by key setMultimap.get("favoriteFish").size(); // 3 // check entry existence setMultimap.containsEntry("favoriteFish", "Ladyfish"); // and so on ...值得注意的是,Redisson对象类型可以是任意类型,不局限于字符串。
|
CopyRight 2018-2019 实验室设备网 版权所有 |